package com.anrongtec.zcpt.utils;

import android.content.Context;
import android.content.res.TypedArray;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.anrongtec.zcpt.R;

/**
 * 作者：liuhui on 2017/2/14 15:20
 * 邮箱：liu594545591@126.com
 * 描述：ToolBarHelper
 */

public class ToolBarHelper {

    /* 上下文，创建view的时候需要用到 */
    private Context mContext;

    /* base view */
    private FrameLayout mContentView;

    /* 用户定义的view */
    private View mUserView;

    /* toolbar */
    private Toolbar mToolBar;

    /* 视图构造器 */
    private LayoutInflater mInflater;

    /*
     * 两个属性 1、toolbar是否悬浮在窗口之上 2、toolbar的高度获取
     */
    private static int[] ATTRS = { R.attr.windowActionBarOverlay,
            R.attr.actionBarSize };

    public ToolBarHelper(Context context, int layoutId) {
        this.mContext = context;
        mInflater = LayoutInflater.from(mContext);
		/* 初始化整个内容 */
        initContentView();
		/* 初始化用户定义的布局 */
        initUserView(layoutId);
		/* 初始化toolbar */
        initToolBar();
    }

    private void initContentView() {
		/* 直接创建一个帧布局，作为视图容器的父容器 */
        mContentView = new FrameLayout(mContext);
        ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT);
        mContentView.setLayoutParams(params);

    }

    private void initToolBar() {
		/* 通过inflater获取toolbar的布局文件 */
        View toolbar = mInflater.inflate(R.layout.layout_toolbar,
                mContentView);
        mToolBar = (Toolbar) toolbar.findViewById(R.id.toolbar);
    }

    private void initUserView(int id) {
        mUserView = mInflater.inflate(id, null);
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT);
        TypedArray typedArray = mContext.getTheme().obtainStyledAttributes(
                ATTRS);
		/* 获取主题中定义的悬浮标志 abc_action_bar_default_height_material */
        boolean overly = typedArray.getBoolean(0, false);
		/* 获取主题中定义的toolbar的高度 */
        int toolBarSize = (int) typedArray.getDimension(
                1,
                (int) mContext.getResources().getDimension(
                        R.dimen.abc_action_bar_default_height_material));
        typedArray.recycle();
		/* 如果是悬浮状态，则不需要设置间距 */
        params.topMargin = overly ? 0 : toolBarSize;
        mContentView.addView(mUserView, params);

    }

    public FrameLayout getContentView() {
        return mContentView;
    }

    public Toolbar getToolBar() {
        return mToolBar;
    }
}